package org.csu.mypetstore.service;

import org.csu.mypetstore.domain.Cart;
import org.csu.mypetstore.domain.CartItem;
import org.csu.mypetstore.domain.Item;
import org.csu.mypetstore.persistence.CartMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;

@Service
public class CartService {

    @Autowired
    private CartMapper cartMapper;

    public List<CartItem> getCartItemListByUserid(String username){
        return cartMapper.getCartItemListByUserName(username);
    }

    public int getQuantityByItemidAndUserid(String username, String itemId) {
        return cartMapper.getQuantityByItemidAndUserid(username, itemId);
    }

    public BigDecimal getListPriceByItemidAndUserid(String username, String itemId) {
        return cartMapper.getListPriceByItemidAndUserid(username, itemId);
    }

    public void insertCartItem(String username, Item item){
        cartMapper.insertCartItem(username,
                item.getItemId(), item.getProduct().getProductId(), true,
                item.getAttribute1(), item.getAttribute2(),
                item.getAttribute3(), item.getAttribute4(),
                item.getAttribute5(),
                1, item.getListPrice(), item.getListPrice());
    }

    public void removeItemById(String username, String itemId){
        cartMapper.removeItemByItemidAndUserid(username, itemId);
    }

    public void updateQuantityByItemidAndUserid(String username, String itemId, int quantity) {
        cartMapper.updateQuantityByItemidAndUserid(itemId, username, quantity);
    }

    public void updateTotalByItemidAndUserid(String username, String itemId, BigDecimal total) {
        cartMapper.updateTotalByItemidAndUserid(itemId, username, total);
    }

    public void removeAllCartItemsByUserid(String username) {
        cartMapper.removeAllCartItemsByUserid(username);
    }

    public void incrementQuantityByItemId(String username,String itemId, int quantity, BigDecimal total) {
        cartMapper.incrementQuantityByItemidAndUserid(username, itemId, quantity, total);
    }
}
